package cn.design.realize;

/**
 * @author dlq
 * @description  ComputerDirector: 指挥者，这里看做是商店的老板,他指挥 装机员(电脑操作员) ComputerBuilder 组装电脑 ,但是 指挥者涉及到产品信息
 *      它调用建造者对象中的部件构造与装配方法完成复杂对象的创建，在指挥者中不涉及具体产品的信息
 * @date 2020/9/15 10:09
 * @since 1.0
 */
public class ComputerDirector {
    private ComputerBuilder builder;

    public ComputerDirector(ComputerBuilder builder) {
        this.builder = builder;
    }

    /**
     * 这里返回值为什么是 void  而不是具体的产品 ComputerProduct
     * 解释： 首先 指挥者 只负责 指挥 操作员 组装电脑,调用 指挥员 组装电脑方法
     * 它不是 给客户电脑的人，真正给电脑的人是操作员----ComputerConcreteBuilder，所以这里是void
     */
    public void construct() {
        builder.buildCpu();
        builder.buildHardDisk();
        builder.buildMemory();
    }
}
